Eu tenho um conjunto de dados conforme fornecido abaixo nome col1 col2 a 10,3 10,9 b 11 15 c 20 7,2 d 6,2 6,2 e 5,3 5,4 f 4.5 4.0 eu quero comparar col1 e col2 do meu df e quero fazer outra coluna em que ao comparar os valores col1 e col2 se o valor de col2 está aumentando de col1, então eu quero inserir o aumento ao lado deles na minha coluna lá e se eles forem diminuindo então eu quero escrever decrescente e sem mudanças se eles forem iguais e eu quero minha saída assim nome col1 col2 col3 um aumento de 10,3 10,9 b 11 15 aumentando c 20 7,2 diminuindo d 6,2 6,2 sem alteração e 5,3 5,4 aumentando f 4,5 4,0 diminuindo
2021-01-31 08:15:35
Com dplyr: df%>% mutate (Col3 = ifelse (col2 == col1, "nenhuma mudança", ifelse (col2> col1, "aumentando", "diminuindo"))) Ou usando case_when como sugerido por @akrun: df%>% mutate (Col3 = case_when (col1 == col2 ~ "sem alteração", col2> col1 ~ "Aumentando", VERDADEIRO ~ "diminuindo")) Resultado: nome col1 col2 col3 1 a 10,3 10,9 aumentando 2 b 11,0 15,0 aumentando 3 c 20,0 7,2 diminuindo 4 d 6,2 6,2 sem alteração 5 e 5,3 5,4 aumentando 6 f 4.5 4.0 diminuindo Dados: df <-structure (list (name = c ("a", "b", "c", "d", "e", "f"), col1 = c (10.3, 11, 20, 6.2, 5.3, 4.5), col2 = c (10.9, 15, 7.2, 6.2, 5.4, 4)), class = "data.frame", row.names = c (NA, -6L)) | Podemos subtrair col1 por col2 e então usar o sinal para atribuir valores df $ col3 <- c ("diminuindo", "sem alteração", "aumentando") [sinal (df $ col1 - df $ col2) + 2] df # name col1 col2 col3 # 1 a 10,3 10,9 diminuindo # 2 b 11,0 15,0 diminuindo # 3 c 20,0 7,2 aumentando # 4 d 6,2 6,2 sem alteração # 5 e 5.3 5.4 diminuindo # 6 f 4.5 4.0 aumentando Ou usando dplyr podemos usar case_when biblioteca (dplyr) df%>% mutate (col3 = case_when (col1 == col2 ~ "sem alteração", col1> col2 ~ "aumentando", VERDADEIRO ~ "diminuindo")) | Base R df $ col3 <-with (df, ifelse (col1> col2, "diminuindo", ifelse (col1